## /Users/aviral/projects/envtracing-paper/data/corpus-sloc.fst
## /Users/aviral/projects/envtracing-paper/data/native_env_first.fst
## /Users/aviral/projects/envtracing-paper/data/native_env_second.fst
## /Users/aviral/projects/envtracing-paper/data/native_env_third.fst
Table Structure
LOCK_UNLOCK_RAW <-
call_stack %>%
filter(fun_name %in% c("lockEnvironment", "lockBinding", "unlockBinding"))
## /Users/aviral/projects/envtracing-paper/data/call_stack.fst
## 'data.frame': 343359 obs. of 32 variables:
## $ type : chr "example" "example" "example" "example" ...
## $ package : chr "abind" "abind" "abind" "abind" ...
## $ filename : chr "abind" "abind" "abind" "acorn" ...
## $ depth : int 13 14 14 13 14 14 13 14 14 13 ...
## $ fun_name : chr "lockEnvironment" "lockEnvironment" "lockEnvironment" "lockEnvironment" ...
## $ result_env_type : chr "NULL" "NULL" "NULL" "NULL" ...
## $ result_env_qual_name: chr NA NA NA NA ...
## $ arg_env_type_1 : chr "environment" "environment" "environment" "environment" ...
## $ arg_env_qual_name_1 : chr "NamedEnv::abind" "NamedEnv::abind" "NamedEnv::NA" "NamedEnv::abind" ...
## $ arg_env_type_2 : chr NA NA NA NA ...
## $ arg_env_qual_name_2 : chr NA NA NA NA ...
## $ env_name : chr NA NA NA NA ...
## $ symbol : chr NA NA NA NA ...
## $ bindings : int 1 1 1 1 1 1 1 1 1 1 ...
## $ fun_type : chr NA NA NA NA ...
## $ fun_qual_name : chr NA NA NA NA ...
## $ n_type : chr NA NA NA NA ...
## $ n : int NA NA NA NA NA NA NA NA NA NA ...
## $ which_type : chr NA NA NA NA ...
## $ which : int NA NA NA NA NA NA NA NA NA NA ...
## $ x_type : chr NA NA NA NA ...
## $ x_int : int NA NA NA NA NA NA NA NA NA NA ...
## $ x_char : chr NA NA NA NA ...
## $ seq_env_qual_name : chr NA NA NA NA ...
## $ se_env_qual_name : chr NA NA NA NA ...
## $ se_val_type : chr NA NA NA NA ...
## $ call_expr : chr "lockEnvironment(env, TRUE)" "lockEnvironment(ns, TRUE)" "lockEnvironment(parent.env(ns), TRUE)" "lockEnvironment(env, TRUE)" ...
## $ qual_name_1 : chr "base*$#$*lockEnvironment" "base*$#$*lockEnvironment" "base*$#$*lockEnvironment" "base*$#$*lockEnvironment" ...
## $ qual_name_2 : chr "base*$#$*attachNamespace" "base*$#$*loadNamespace*$#$*sealNamespace" "base*$#$*loadNamespace*$#$*sealNamespace" "base*$#$*attachNamespace" ...
## $ qual_name_3 : chr "base*$#$*library" "base*$#$*loadNamespace" "base*$#$*loadNamespace" "base*$#$*library" ...
## $ qual_name_4 : chr NA NA NA NA ...
## $ count : int 1 1 1 1 1 1 1 1 1 1 ...
Summary
LOCK_UNLOCK_SUMMARY <-
LOCK_UNLOCK_RAW %>%
count(fun_name, wt = count, name = "count") %>%
arrange(desc(count))
lockEnvironment
Raw
LOCK_ENV_TABLE <-
LOCK_UNLOCK_RAW %>%
filter(fun_name == "lockEnvironment") %>%
mutate(source = paste0(package, "*$#$*", type, "/", filename)) %>%
mutate(qual_name_2 = case_when(str_starts(qual_name_2, fixed("base*$#$*loadNamespace*$#$*")) & qual_name_2 != "base*$#$*loadNamespace*$#$*sealNamespace" ~ "base*$#$*loadNamespace*$#$*sealNamespace",
qual_name_2 == "<NA>*$#$*2ae04899b56d2a4922d9088b16dca9f5493c3ceb37dabbfb0d6625d23af95e73e9e212ac86b83f1445eacfdbd3fa81b3a661bb7f3c5da3fa04debfa085395681" ~ "R6*$#$*clone_method",
qual_name_2 == "<NA>*$#$*new" ~ "R6*$#$*new",
TRUE ~ qual_name_2)) %>%
mutate(pack_name = map_chr(str_split(qual_name_2, fixed("*$#$*")), ~.[1])) %>%
mutate(arg_env_pack_name = map_chr(str_split(arg_env_qual_name_1, fixed("*$#$*")), ~.[1])) %>%
mutate(category = case_when(str_detect(qual_name_2, fixed("/")) ~ "Top-Level",
pack_name %in% CORE_PACKAGES ~ "Core",
TRUE ~ "User")) %>%
count(fun_name, source, call_expr, category, pack_name, qual_name_2, qual_name_3, qual_name_4, arg_env_pack_name, arg_env_qual_name = arg_env_qual_name_1, wt = count, name = "calls") %>%
arrange(desc(calls))
datatable(LOCK_ENV_TABLE)
## Warning in instance$preRenderHook(instance): It seems your data is too big
## for client-side DataTables. You may consider server-side processing: https://
## rstudio.github.io/DT/server.html